home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / nethack.lha / nethack-3.1 / include / def_os2.h < prev    next >
C/C++ Source or Header  |  1993-01-21  |  4KB  |  213 lines

  1. /*    SCCS Id: @(#)def_os2.h    3.1    93/01/19    */
  2. /*    Copyright (c) Timo Hakulinen, 1990, 1991, 1992, 1993. */
  3. /*    NetHack may be freely redistributed.  See license for details. */
  4.  
  5. /*
  6.  *    Only a small portion of all OS/2 defines are needed, so the
  7.  *    actual include files often need not be used.  In fact,
  8.  *    including the full headers may stall the compile in DOS.
  9.  */
  10.  
  11. #ifdef OS2_USESYSHEADERS
  12.  
  13. # define INCL_NOPMAPI
  14. # define INCL_DOSFILEMGR
  15. # define INCL_DOS
  16. # define INCL_SUB
  17.  
  18. # include <os2.h>
  19.  
  20. #else
  21.  
  22. typedef char CHAR;
  23. typedef void VOID;
  24.  
  25. typedef unsigned char UCHAR;
  26. typedef unsigned short USHORT;
  27. typedef unsigned int UINT;
  28. typedef unsigned long ULONG;
  29. typedef unsigned char BYTE;
  30.  
  31. # ifdef OS2_32BITAPI
  32.  
  33. typedef unsigned long SHANDLE;
  34. typedef USHORT HKBD;
  35. typedef USHORT HVIO;
  36.  
  37. #  define CCHMAXPATHCOMP 256
  38.  
  39. #  ifdef OS2_CSET2
  40. #   define API16 _Far16 _Pascal
  41. #   define DAT16
  42. #   define API32 _System
  43. #   define KbdGetStatus KBD16GETSTATUS
  44. #   define KbdSetStatus KBD16SETSTATUS
  45. #   define KbdCharIn    KBD16CHARIN
  46. #   define KbdPeek      KBD16PEEK
  47. #   define VioGetMode   VIO16GETMODE
  48. #   define VioSetCurPos VIO16SETCURPOS
  49. #  else
  50. #   define API16
  51. #   define DAT16
  52. #   define API32
  53. #  endif
  54.  
  55. #  define DAT
  56.  
  57. # else /* OS2_32BITAPI */
  58.  
  59. typedef unsigned short SHANDLE;
  60. typedef SHANDLE HKBD;
  61. typedef SHANDLE HVIO;
  62.  
  63. #  define CCHMAXPATHCOMP 13
  64.  
  65. #  ifdef OS2_MSC
  66. #   define API16 pascal far
  67. #   define DAT16
  68. #  endif
  69.  
  70. #  define DAT DAT16
  71.  
  72. # endif /* OS2_32BITAPI */
  73.  
  74. typedef USHORT * DAT16 PUSHORT;
  75. typedef BYTE * DAT16 PBYTE;
  76. typedef ULONG * DAT PULONG;
  77. typedef VOID * DAT PVOID;
  78.  
  79. typedef SHANDLE HDIR;
  80. typedef HDIR * DAT PHDIR;
  81.  
  82. typedef char * DAT16 PCH;
  83. typedef char * DAT PSZ;
  84.  
  85. /* all supported compilers understand this */
  86.  
  87. # pragma pack(2)
  88.  
  89. typedef struct {
  90.     UCHAR  chChar;
  91.     UCHAR  chScan;
  92.     UCHAR  fbStatus;
  93.     UCHAR  bNlsShift;
  94.     USHORT fsState;
  95.     ULONG  time;
  96. } KBDKEYINFO;
  97.  
  98. typedef KBDKEYINFO * DAT16 PKBDKEYINFO;
  99.  
  100. /* File time and date types */
  101.  
  102. typedef struct {
  103.     UINT twosecs : 5;
  104.     UINT minutes : 6;
  105.     UINT hours   : 5;
  106. } FTIME;
  107.  
  108. typedef struct {
  109.     UINT day     : 5;
  110.     UINT month   : 4;
  111.     UINT year    : 7;
  112. } FDATE;
  113.  
  114. # ifdef OS2_32BITAPI
  115.  
  116. typedef struct {
  117.     ULONG oNextEntryOffset;
  118.     FDATE fdateCreation;
  119.     FTIME ftimeCreation;
  120.     FDATE fdateLastAccess;
  121.     FTIME ftimeLastAccess;
  122.     FDATE fdateLastWrite;
  123.     FTIME ftimeLastWrite;
  124.     ULONG cbFile;
  125.     ULONG cbFileAlloc;
  126.     ULONG attrFile;
  127.     UCHAR cchName;
  128.     CHAR  achName[CCHMAXPATHCOMP];
  129. } FILEFINDBUF3;
  130.  
  131. # else
  132.  
  133. typedef struct {
  134.     FDATE  fdateCreation;
  135.     FTIME  ftimeCreation;
  136.     FDATE  fdateLastAccess;
  137.     FTIME  ftimeLastAccess;
  138.     FDATE  fdateLastWrite;
  139.     FTIME  ftimeLastWrite;
  140.     ULONG  cbFile;
  141.     ULONG  cbFileAlloc;
  142.     USHORT attrFile;
  143.     UCHAR  cchName;
  144.     CHAR   achName[CCHMAXPATHCOMP];
  145. } FILEFINDBUF;
  146.  
  147. typedef FILEFINDBUF * DAT16 PFILEFINDBUF;
  148.  
  149. # endif /* OS2_32BITAPI */
  150.  
  151. typedef struct {
  152.     ULONG  idFileSystem;
  153.     ULONG  cSectorUnit;
  154.     ULONG  cUnit;
  155.     ULONG  cUnitAvail;
  156.     USHORT cbSector;
  157. } FSALLOCATE;
  158.  
  159. typedef struct {
  160.     USHORT cb;
  161.     USHORT fsMask;
  162.     USHORT chTurnAround;
  163.     USHORT fsInterim;
  164.     USHORT fsState;
  165. } KBDINFO;
  166.  
  167. typedef KBDINFO * DAT16 PKBDINFO;
  168.  
  169. typedef struct {
  170.     USHORT cb;
  171.     UCHAR  fbType;
  172.     UCHAR  color;
  173.     USHORT col;
  174.     USHORT row;
  175.     USHORT hres;
  176.     USHORT vres;
  177.     UCHAR  fmt_ID;
  178.     UCHAR  attrib;
  179.     ULONG  buf_addr;
  180.     ULONG  buf_length;
  181.     ULONG  full_length;
  182.     ULONG  partial_length;
  183.     PCH    ext_data_addr;
  184. } VIOMODEINFO;
  185.  
  186. typedef VIOMODEINFO * DAT16 PVIOMODEINFO;
  187.  
  188. # pragma pack()
  189.  
  190. /* OS2 API functions */
  191.  
  192. USHORT API16 KbdGetStatus(PKBDINFO, HKBD);
  193. USHORT API16 KbdSetStatus(PKBDINFO, HKBD);
  194. USHORT API16 KbdCharIn(PKBDKEYINFO, USHORT, HKBD);
  195. USHORT API16 KbdPeek(PKBDKEYINFO, HKBD);
  196.  
  197. USHORT API16 VioGetMode(PVIOMODEINFO, HVIO);
  198. USHORT API16 VioSetCurPos(USHORT, USHORT, HVIO);
  199.  
  200. # ifdef OS2_32BITAPI
  201. ULONG API32 DosQueryFSInfo(ULONG, ULONG, PVOID, ULONG);
  202. ULONG API32 DosFindFirst(PSZ, PHDIR, ULONG, PVOID, ULONG, PULONG, ULONG);
  203. ULONG API32 DosFindNext(HDIR, PVOID, ULONG, PULONG);
  204. ULONG API32 DosSetDefaultDisk(ULONG);
  205. # else
  206. USHORT API16 DosQFSInfo(USHORT, USHORT, PBYTE, USHORT);
  207. USHORT API16 DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG);
  208. USHORT API16 DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT);
  209. USHORT API16 DosSelectDisk(USHORT);
  210. # endif /* OS2_32BITAPI */
  211.  
  212. #endif /* OS2_USESYSHEADERS */
  213.